home *** CD-ROM | disk | FTP | other *** search
/ The Guided Tour of Multimedia (Second Edition) / The Guided Tour of Multimedia (Second Edition).iso / trials / director / evalcopy / director.z / LUCK.DIR / 00001_Script_1 next >
Text File  |  1994-07-11  |  12KB  |  352 lines

  1. -- Luck Movie Script Rev 3
  2. -- *********************************************************************
  3. -- The startMovie handler is called automatically when the movie is started
  4.  
  5. on startMovie
  6.   
  7.   --We are going to to keep two lists that are used by other handlers
  8.   --so we store them in global variables
  9.   
  10.   global masterList, artistList
  11.   
  12.   --These statements delete any previous values held by the
  13.   --variables masteList, artistList and defaultList. This also establishes
  14.   --these variables to contain lists.
  15.   
  16.   set masterList to []
  17.   set artistList to []
  18.   set defaultList to []
  19.   
  20.   --These statements set the text size of all the 
  21.   --text fields used to 12point and make the bid
  22.   --and name entry fields blank, erasing any previous input.
  23.   
  24.   set the textSize of field "name entry field" = 12
  25.   set the textSize of field "bid entry field" = 12
  26.   set the textSize of field "display winning bids" = 12
  27.   set the textSize of field "display winner names" = 12
  28.   put " "into field "name entry field"
  29.   put " "into field "bid entry field"
  30.   
  31.   --These statements add all the designers to a list
  32.   --called designerList. designerList is actually a list
  33.   --within a list; each entry for a designer contains a two-member list
  34.   --made up of the designer's name and a code for the designer.
  35.   --The designer code is also used in the frame markers.
  36.   
  37.   add artistlist, ["Andrew Belschner","Bel0"]
  38.   add artistlist, ["Richard Brayton","Bray0"]
  39.   add artistlist, ["Glenn Gee","Gee0"]
  40.   add artistlist, ["Brian Kenneth Graham","Grah0"]
  41.   add artistlist, ["Brian Kane","Kane0"]
  42.   add artistlist, ["Alan & Joy Ohashi","Oha0"]
  43.   
  44.   --This statement creates a three member list to provide default bidders.
  45.   --Again this is a list containing other lists. 
  46.   
  47.   set defaultlist to [["John Doe",300],["Joe Smith",500],["Jane Jones",450]]
  48.   
  49.   --These statements step through the artist lists to make a master list containing
  50.   --all the bids and bidders in the default list as if these bidders had
  51.   --entered bids for these designer's work
  52.   
  53.   repeat with artistnumb = 1 to count(artistlist)
  54.     --These statements extract the designer (artist) code from
  55.     --each entry in the artist list.
  56.     
  57.     set currentArtist to getAt(artistlist, artistnumb)
  58.     set currentArtistCode to getAt(currentArtist, 2)
  59.     
  60.     --These statements add to a master list entries for each of the members
  61.     --of the default list for each of the artist. Therefore we have a master list
  62.     --where John Doe, Joe Smith, and Jane Jones all bid the same amount for each of
  63.     --the designer's work.
  64.     
  65.     repeat with defaultnumb = 1 to count(defaultlist)
  66.       set currentDefault to getAt(defaultList, defaultNumb)
  67.       set currentName to getAt(currentDefault,1)
  68.       set currentBid to getAt(currentDefault,2)
  69.       add (masterlist, [currentArtistCode, currentName, currentBid])
  70.     end repeat
  71.     
  72.   end repeat
  73.   
  74.   --This statement sets the keyDownScript to the handler "tallyBid" so
  75.   -- that whenever a key is pressed the "tallyBid" handler is executed.
  76.   
  77.   set the keyDownScript = "tallyBid"
  78.   
  79.   --This statement allows sprite 22 to respond immediately when clicked
  80.   --rather than waiting for a mouseup
  81.   
  82.   set the immediate of sprite 22 = TRUE
  83.   
  84.   -- We use a special cursor that is stored as a castmember. The cast member
  85.   --is a 16 x 16 pixel, 1 bit cast member.
  86.   
  87.   set magcursor to [the number of cast "magnifying glass"]
  88.   
  89.   -- set the cursor of each hot spot sprite to this special cursor.
  90.   -- its cast number is stored in the variable magcursor
  91.   
  92.   -- menu bar
  93.   set the cursor of sprite 2 = magcursor
  94.   
  95.   --  large designer name sprite
  96.   set the cursor of sprite 3 = magcursor
  97.   --  small booth icon sprites
  98.   set the cursor of sprite 5 = magcursor
  99.   set the cursor of sprite 6 = magcursor
  100.   set the cursor of sprite 7 = magcursor
  101.   set the cursor of sprite 8 = magcursor
  102.   set the cursor of sprite 9 = magcursor
  103.   set the cursor of sprite 10 = magcursor
  104.   
  105.   -- small furniture icons
  106.   set the cursor of sprite 12 = magcursor
  107.   set the cursor of sprite 13 = magcursor
  108.   set the cursor of sprite 14 = magcursor
  109.   set the cursor of sprite 15 = magcursor
  110.   
  111.   --  large furniture icons
  112.   set the cursor of sprite 16 = magcursor
  113.   set the cursor of sprite 17 = magcursor
  114.   
  115.   -- enter bid sprite
  116.   set the cursor of sprite 22 = magcursor
  117.   
  118. end startMovie
  119.  
  120. -- *********************************************************************
  121. -- The stopMovie handler is called automatically when the movie is stopped
  122.  
  123. on stopMovie
  124.   --This statement turns the cursor back to the arrow cursor when the movie
  125.   --is stopped.
  126.   
  127.   cursor (-1) 
  128. end stopMovie
  129.  
  130.  
  131. -- *********************************************************************
  132. -- called when the user clicks on the Designer Name Sprite (channel 3)
  133. -- the handler determines the vertical position of the mouse and deduces the 
  134. -- designer name that was clicked. Then it moves the playback head to
  135. -- the frame in the score that represents that designer.
  136.  
  137. on designerNameClick
  138.   
  139.   put "" into field "name entry field"
  140.   put "" into field "bid entry field"
  141.   
  142.   
  143.   put the mouseV into VertPos
  144.   if VertPos > 56 and  VertPos < 210 then
  145.     if VertPos > 185 then
  146.       -- Designer Ohashi
  147.       go "Oha0"
  148.     else
  149.       if VertPos > 163 then
  150.         -- Designer Kane
  151.         go "Kane0"
  152.       else
  153.         if VertPos >136 then
  154.           -- Designer Graham
  155.           go "Grah0"
  156.         else
  157.           if VertPos > 108 then
  158.             -- Designer Gee
  159.             go "Gee0"
  160.           else
  161.             if VertPos > 83 then
  162.               -- Designer Brayton
  163.               go "Bray0"
  164.             else
  165.               -- Designer Belschner
  166.               go "Bel0"
  167.             end if
  168.           end if
  169.         end if
  170.       end if
  171.     end if
  172.   end if
  173. end designerNameClick
  174.  
  175.  
  176.  
  177. -- *********************************************************************
  178. -- called when the user clicks the Menu Bar Sprite (channel 2)
  179. -- the handler determines the horizontal position of the mouse and deduces the 
  180. -- menu item that was clicked. Then it calls the appropriate movie.
  181.  
  182. on bartender
  183.   put the mouseH into HortPos
  184.   if HortPos < 123 then
  185.     -- furniture menu item clicked
  186.     play movie "FURNITUR.DIR" 
  187.   else
  188.     if HortPos < 273 then
  189.       -- philanthropy menu item clicked
  190.       play movie "PHILANTH.DIR" 
  191.     else
  192.       if HortPos < 385 then
  193.         -- learning menu item clicked
  194.         play movie "LEARN.DIR" 
  195.       else
  196.         if HortPos < 440 then
  197.           -- luck menu item clicked
  198.           play movie "LUCK.DIR"
  199.         else
  200.           -- help menu item clicked
  201.           play movie "HELP.DIR" 
  202.         end if
  203.       end if
  204.     end if
  205.   end if
  206. end bartender
  207.  
  208.  
  209. -- *********************************************************************
  210. -- This handler is used to accept a bid for a given designer. The bid is 
  211. --added to the master list
  212. -- *********************************************************************
  213.  
  214. on acceptBid currentArtist
  215.   global masterList
  216.   put the text of field "bid entry field" into theBid
  217.   put the text of field "name entry field" into theName
  218.   
  219.   --These statements send the movie to the help screens for bid entry
  220.   --if the user enters a blank in either the bid or name fields.
  221.   --If the user has entered something in both these fields, then 
  222.   --these statements accept the bid and enter the bid into the master list.
  223.   
  224.   if theBid = "" or theName = "" then
  225.     go the frame + 1
  226.   else
  227.     --this statement adds the name and bid entered by the user along with
  228.     --the name of the current desinger to the master list
  229.     
  230.     add(masterList,[currentArtist,theName,value(theBid)])
  231.     
  232.     put EMPTY into field "name entry field"
  233.     put EMPTY into field "bid entry field"
  234.     go to the frame -1
  235.   end if
  236. end acceptBid
  237.  
  238.  
  239.  
  240. -- *********************************************************************
  241. -- This handler is used to tally all bids for all designers
  242. -- The highest bid for each designer will selected as the winner
  243. -- of the bidding. A list of the winners will be prepared for display
  244. --on the stage and the user presses the "=" key.
  245. -- *********************************************************************
  246.  
  247. on tallyBid
  248.   global masterList, artistList, eachArtistList
  249.   
  250.   --These statements stop the passage of the event if the
  251.   --user has pressed the Return key, causing the Return key to have no
  252.   --effect.
  253.   
  254.   if the key = RETURN then 
  255.     dontPassEvent  
  256.   end if
  257.   
  258.   -- These statements tally the bids if the user has pressed the "="key.
  259.   
  260.   if the key = "="  then
  261.     dontPassEvent
  262.     set eachArtistList to []
  263.     set winnerList to []
  264.     
  265.     --These statements step through each artist in the artistList and extract 
  266.     --from the master list, a list called "eachArtistList"
  267.     --that contains all the bids for that artist.
  268.     
  269.     repeat with whichArtist = 1 to count(artistList)
  270.       
  271.       --These statements determine which artist we are compiling a
  272.       --list for this time through the loop. 
  273.       
  274.       set thisArtistRecord to getAt(artistList, whichArtist)
  275.       set eachArtistList to []
  276.       set thisArtist to getAt(thisArtistRecord,2)
  277.       
  278.       --These statements repeat through master list and see if 
  279.       --the current artist matches the artist listed in the master list. 
  280.       --If the artist does match the artist listed in a record of the master
  281.       --list, then that record from the master list is appended to the 
  282.       --list "eachArtistList"
  283.       
  284.       repeat with masterRecord = 1 to count(masterList)
  285.         set currentMasterRecord to getAt(masterList, masterRecord)
  286.         set currentArtist to getAt(currentMasterRecord,1)
  287.         
  288.         if currentArtist = thisArtist then
  289.           append(eachArtistList,currentMasterRecord)
  290.           
  291.         end if
  292.       end repeat
  293.       
  294.       --These statements extract the maximum bid from the lists
  295.       --eachArtistList.
  296.       
  297.       set firstArtistRecord to getAt(eachArtistList, 1)
  298.       set maxBid to getAt(firstArtistRecord,3)
  299.       
  300.       repeat with eachArtistRecord=1 to count(eachArtistList)
  301.         
  302.         set currentArtistRecord to getAt(eachArtistList,eachArtistRecord)
  303.         set currentBid to getAt(currentArtistRecord,3)
  304.         
  305.         --These statements set maxBid to the larger of either the current
  306.         --list member or the previous bid.
  307.         
  308.         if currentBid > maxBid then
  309.           set maxBid to currentBid
  310.           set maxArtistRecord to currentArtistRecord
  311.         end if
  312.       end repeat
  313.       
  314.       --This statement appends the maximum bid for the current artist
  315.       --to the list called "winnerlist". The winner list should always have
  316.       --one winner for each artist and therefore a number of members equal to 
  317.       --the number of artists.
  318.       
  319.       append(winnerList,maxArtistRecord)
  320.       
  321.     end repeat
  322.     
  323.     --We have now finished compiling a list called winnerList that contains
  324.     --the winning bid amount and the bid winner name for each artist.
  325.     
  326.     --These statements erase whatever is in the fields used
  327.     --to display the winners.
  328.     
  329.     put EMPTY into field "display winner names"
  330.     put EMPTY into field "display winning bids"
  331.     
  332.     --These statements step through the winner list to compile
  333.     --a text cast member called "display winner names" that contains
  334.     --the winner names, winning bids, and descriptive text.
  335.     
  336.     repeat with m = 1 to count(winnerList)
  337.       set currentwinner to getAt(winnerList, m)
  338.       set nameDisplay to getAt(currentwinner,2)
  339.       set bidDisplay to getAt(currentwinner, 3)
  340.       put "The winning bid is $" & bidDisplay && "by" && nameDisplay & RETURN & RETURN after¼
  341.         field "display winner names"
  342.     end repeat
  343.     go "showAucRes" 
  344.   end if
  345. end
  346.  
  347. -- *********************************************************************
  348. -- Basic handler used when this moive is played in a window.
  349. -- Provides a way to reset the movie.
  350. on resetMovie
  351.    play movie "Begin.DIR"
  352. end resetMovie